Collaborative search of databases

ABSTRACT

A search query is received from a search engine of multiple search engines. One or more search results from each search engine of the multiple search engines in response to the search query are received. Each search result of the one or more search results includes a first search score. A factor is determined for each search result of the one or more search results. A second search score is determined for each search result of the one or more search results based on the first search score and the factor. The one or more search results are displayed to a user of the search engine in an order. The order is based on the second search score.

BACKGROUND OF THE INVENTION

The present invention relates generally to the field of databasemanagement, and more particularly to searches of multiple shareddatabases.

A database, in general, is an organized collection of related data. Forexample, companies often maintain a database containing a collection offrequently asked question and associated answers. Access to datacontained in a database is typically managed by computer software thatprovides access to all of the data contained in the database allowsusers to interact with the data. The software typically providesfunctions relating to the management of the database that includeupdating data (i.e., adding, modifying, and deleting data), dataretrieval (i.e., providing data information in a form directly usable byother applications), and administration (i.e., registering users andmonitoring use of the data base for security purposes).

SUMMARY

A search query is received from a search engine of multiple searchengines. One or more search results from each search engine of themultiple search engines in response to the search query are received.Each search result of the one or more search results includes a firstsearch score. A factor is determined for each search result of the oneor more search results. A second search score is determined for eachsearch result of the one or more search results based on the firstsearch score and the factor. The one or more search results aredisplayed to a user of the search engine in an order. The order is basedon the second search score.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a functional block diagram of a distributed data processingenvironment, in accordance with an embodiment of the present invention;

FIG. 2 is a flowchart of operational steps for providing ordered searchresults from multiple data sources shared across a network, inaccordance with an embodiment of the present invention; and

FIG. 3 is a block diagram of components of the server devices of FIG. 1, which includes cross-search engine 132, in accordance with anembodiment of the present invention.

DETAILED DESCRIPTION

Embodiments of the present invention recognize that answering questionsfrom consumers can be a time-consuming and resource-consuming processfor companies. Embodiments of the present invention recognize that itcan be a time-consuming and frustrating process for a consumer to findthe answer to a question related to a company, product, or service. Forexample, a consumer may have to separately search through multipledatabases, such as collections of frequently asked questions andassociated answers, in order to find the answer to a question. Thisprocess can be time-consuming and unsuccessful particularly where it isunclear to a consumer which company could answer the question mostaccurately. Such a situation may arise where multiple companies areactive in similar or overlapping markets or where multiple companies areinvolved in similar products or services. For example, a question from aconsumer regarding a mobile software application or a mobile deviceitself would be answered most accurately by the maker of the device orthe software application developer as opposed to the telecommunicationscompany used by the consumer.

Embodiments of the present invention provide techniques for acollaborative search of multiple databases across a network to provideordered results to a search query originating from any of the databases.

The present invention will now be described in detail with reference tothe Figures. FIG. 1 is a functional block diagram of a computingenvironment, generally designated 100, in accordance with an embodimentof the present invention. FIG. 1 provides only an illustration of oneimplementation and does not imply any limitations with regard to theenvironments in which different embodiments may be implemented. Thoseskilled in the art may make many modifications to the depictedenvironment without departing from the scope of the invention as recitedby the claims.

In the illustrated embodiment, distributed data processing environment100 includes server device A 110, server device B 120, and server deviceC 130. Server device A 110, server device B 120, and server device C 130are interconnected through network 102. In an embodiment, distributeddata processing environment 100 may include one or more additionaldevices (not shown) that are substantially similar to server device A110 and server device B 120 or any other device.

In an embodiment, network 102 may generally be any combination ofconnections and protocols that supports communications between serverdevice A 110, server device B 120, server device C 130 and any othercomputing device connected to network 102. In example embodiments,network 102 may be a local area network (LAN), a telecommunicationsnetwork, a wide area network (WAN), such as the Internet, or anycombination thereof. In an embodiment, network 102 may include wired,wireless, or fiber optic connections.

In an embodiment, server device A 110 may generally be any electronicdevice or combination of electronic devices capable of executingcomputer readable program instructions. In example embodiments, serverdevice A 110 may be a personal computer, workstation, mobile phone, orpersonal digital assistant. In an embodiment, server device A 110 may bea computer system utilizing clustered computers and components, such asdatabase server devices or application server devices, that act as asingle pool of seamless resources when accessed by elements ofdistributed data processing environment 100, such as in a cloudcomputing environment. Server device A 110 may include components asdepicted and described with respect to FIG. 3 , in accordance withembodiments of the present invention. Server device B 120 and serverdevice C 130 may be substantially similar to server device A 110.

In the illustrated embodiment, server device A 110 includes searchengine A 112, shared repository A 114, and user interface A 116. In analternative embodiment, search engine A 112, shared repository A 114, oruser interface A 116 may be located on another computing device (notshown) connected to network 102, and search engine A 112, sharedrepository A 114, and user interface A 116 may communicate throughnetwork 102.

In an embodiment, search engine A 112 is any computer program,application, or subprogram of a larger computer program that searchesshared repository A 114 and identifies items of information stored inshared repository A 114 that match a search query, in accordance withembodiments of the present invention. In an embodiment, the search querymay be provided by a user through user interface A 116 or,alternatively, through user interface B 126. In an embodiment, thesearch query may be provided as, for example, text (e.g., words,phrases, questions), images, or sounds. In an embodiment, for each itemin shared repository A 114 identified by search engine A 112 as a matchto the search query, search engine A 112 assigns an item a search scorebased on how closely the item matches the search query. Search engine B122 may be substantially similar to search engine A 112.

In an embodiment, shared repository A 114 contains items of informationthat are searched and identified by search engine A 112 according to asearch query. In an embodiment, the items of information may be, forexample, text information, image information, or sound information. Inan embodiment, the items of information may be a collection offrequently asked questions and answers. For example, shared repository A114 may contain a collection of frequently asked questions and answersfor a mobile device company, and shared repository A 114 may contain thequestion “How do I use the memory backup service application?” and anassociated explanation of how to use the memory backup service.

In an embodiment, shared repository A 114 may be implemented using anynon-volatile storage media known in the art. For example, sharedrepository 114 may be implemented with a tape library, optical library,one or more independent hard disk drives, or multiple hard disk drivesin a redundant array of independent disks (RAID). In an embodiment,shared repository A 114 may be implemented using any suitable storagearchitecture known in the art. For example, shared repository A 114 maybe implemented with a relational database or an object-orienteddatabase. Shared repository B 124 may be substantially similar to sharedrepository A 114. The term “shared repository” may refer to sharedrepository A 114, shared repository B 124, or any other repository (notshown) substantially similar to shared repository A 114 and sharedrepository B 124.

In an embodiment, user interface A 116 is the information, such asgraphic, text, and sound, that search engine A 112 presents to a userand the control sequences the user employs to control and interact withsearch engine A 112. In an embodiment, user interface A 116 may be agraphical user interface (GUI) whereby user interface A 116 allows auser to interact with electronic devices, such as a keyboard or a mouse,through graphical icons and visual indicators, such as secondarynotations, as opposed to text-based interfaces, typed command labels, ortext navigation. GUIs were introduced for computers in response to theperceived steep learning curve of command-line interfaces, whichrequired commands to be typed on the keyboard. A user may perform anaction in user interface A 116 through direct manipulation of thegraphical elements. User interface B 126 may be substantially similar touser interface A 116.

In an embodiment, cross-search engine 132 is any computer program,application, or subprogram of a larger computer program that directssearch engine A 112 and search engine B 122 to perform searchesaccording to a search query, revises the search scores of the resultingidentified items using a share factor, and provides the items in anorder corresponding to the revised search scores, in accordance withembodiments of the present invention. In an embodiment, cross-searchengine 132 receives the search query from either user interface A 116 oruser interface B 126 and directs both search engine A 112 and searchengine B 122 to perform a search of shared repository A 114 and sharedrepository B 124, respectively, for items matching the criteria of thesearch query.

In an embodiment, cross-search repository 134 contains share factorinformation monitored and updated by cross-search engine 132. In anembodiment, the share factor information includes the number of timeseach item of a shared repository has been provided to a user and thenumber of times each item of a shared repository has been selected by auser. In an embodiment, the share factor information is stored andupdated for each item of a shared repository. In an alternativeembodiment, the share factor information is additionally stored andupdated for each shared repository.

In an embodiment, cross-search repository 134 may be implemented usingany non-volatile storage media known in the art. For example,cross-search repository 134 may be implemented with a tape library,optical library, one or more independent hard disk drives, or multiplehard disk drives in a redundant array of independent disks (RAID). In anembodiment, cross-search repository 134 may be implemented using anysuitable storage architecture known in the art. For example,cross-search repository 134 may be implemented with a relationaldatabase or an object-oriented database.

FIG. 2 is a flowchart of workflow 200 illustrating operational steps forproviding ordered search results from multiple data sources sharedacross a network. In the illustrated embodiment, the steps of workflow200 are performed by cross-search engine 132. In an alternativeembodiment, the steps of workflow may be performed by any other computerprogram, or programs, while working with cross-search engine 132. In anembodiment, cross-search engine 132 begins performing the steps ofworkflow 200 in response to receiving an indication to provide orderedsearch results from shared repositories. For example, a user, throughthe user interface of server device C 130 (user interface not shown),may provide an indication to cross-search engine 132 to provide orderedsearch results for searches of shared repository A 114 and sharedrepository B 124.

Cross-search engine 132 receives a search query (step 205). In anembodiment, a user provides the search query through user interface A116 or, alternatively, through user interface B 126. In an embodiment,the search query may be provided as, for example, text (e.g., words,phrases, questions), images, or sounds. As an example, a user mayprovide the search query “data backup on cloud” through user interface A116.

Cross-search engine 132 searches shared repositories (step 210). Inother words, in an embodiment, cross-search engine 132 directs searchengine A 112 and search engine B 122 to perform searches of sharedrepository A 114 and shared repository B 124, respectively, and identifyitems of information that match or otherwise respond to the searchquery. In an embodiment, the items of information may be, for example,text information, image information, or sound information. In anembodiment, the items of information may be a collection of frequentlyasked questions and answers.

As an example, shared repository A 114 may contain a collection offrequently asked questions and answers for a mobile device company, andin response to searching shared repository A 114 according to the searchquery “data backup on cloud”, search engine A 112 may identify thequestion “How do I use the cloud-based data backup application?” and anassociated answer as an item that matches the search query.Additionally, shared repository B 124 may contain a collection offrequently asked questions and answers for a telecommunications company,and in response to searching shared repository B 124 according to thesearch query “data backup on cloud”, search engine B 122 may identifythe question “How do I upgrade my data plan?” and an associated answeras an item that matches the search query.

In an embodiment, search engine A 112 and search engine B 122 assign asearch score to each item identified as a match to the search querybased on how closely an item matches or otherwise responds to the searchquery criteria. In an embodiment, the search score may be a linear sumof the goodness of fit of various attributes (e.g., a₁x₁+a₂x₂+a₃x₃), orthe search score may be based on a non-linear function (e.g.,1/(1+exp(a₁x₁−a₂x₂−a₃x₃))). Where the score is based on a non-linearfunction, cross-search engine 132 puts the score in the inverse functionof the non-linear function. For example, where the score is based on thenon-linear function: score=1/(1+exp(a₁x₁−a₂x₂−a₃x₃), cross-search engine132 puts the score into the inverse function: score′=−log(1/(score−1)).In this manner, a search score can be represented by a ratio scale inorder to ensure that a value multiplied by a constant is a meaningfulrepresentation of the relative relevancy of the items.

Cross-search engine 132 revises scores of the search results using sharefactors (step 215). In other words, in an embodiment, cross-searchengine 132, for each identified item, applies a share factor to thesearch score of an item. In an embodiment, a share factor is, ingeneral, a value that reflects the likelihood of a user selecting anitem that is contained in a shared repository other than the sharedrepository corresponding to the user interface through which the searchquery is received. For example, where cross-search engine 132 receives asearch query from user interface A 116, and a search is performed bysearch engine A 112 and search engine B 122, the search scores of anyitems identified by search engine B 122 in shared repository B 124 arerevised by cross-search engine 132 using a share factor, whereas thesearch scores of any items identified by search engine A 112 in sharedrepository A 114 are not revised using a share factor and remainunadjusted. In an embodiment, cross-search engine 132 determines a sharefactor using the share factor information stored in cross-searchrepository 134.

The shared repository that is associated with the user interface throughwhich the current search query is received may be referred to as “queryrepository” (e.g., shared repository A 114 in the above example), andany other shared repository may be referred to as “non-query repository”(e.g., shared repository B 124 in the above example).

In an embodiment, a share factor is proportional to the number of timesa particular item of a non-query repository has been selected by a userof a query repository and inversely proportional to the number of timesthe item has been provided to a user of the query repository. In anembodiment, a share factor is defined as the number of times aparticular item of a non-query repository has been selected by a user ofa query repository (S) divided by the number of times the item has beenprovided to a user of the query repository (D) (i.e., the value of ashare factor for an item is S/D). In this manner, a share factor isassociated with each item of a shared repository. In an alternativeembodiment, a share factor is defined as the number of times any item ofa particular non-query shared repository has been selected by a user ofa query repository (S) divided by the number of times the items havebeen provided to a user of the query repository (D) (i.e., the value ofa share factor for an item is S/D). In this manner, a share factor isassociated with each shared repository. In other words, a share factorassociated with a shared repository is used to revise the search scoresfor all items contained in the shared repository.

As an example, where user interface A 116 receives the search query“data backup on cloud”, and search engine B 122 identifies the question“How do I upgrade my data plan?” and an associated answer (FAQ B item)as a matching item in shared repository B 124 and assigns FAQ B item asearch score of 6, the share factor used by cross-search engine 132 torevise the search score may be the value of: the number of times FAQ Bitem has been selected by a user of shared repository A 114 divided bythe number of times FAQ B item has been identified as a match andprovided to a user of shared repository A 114. For example, where FAQ Bitem has been identified as a match and provided to a user of sharedrepository A 114 20 times (D) and has been selected by a user 5 of thosetimes (S), the share factor of FAQ B item (S/D) is the value of 5divided by 20, or 0.25, and the revised search score of FAQ B item isthe search score (6) multiplied by the share factor (0.25), or 1.5.

In the same example, the share factor may alternatively be the value of:the number of times any item contained in shared repository B 124 hasbeen selected by a user of shared repository A 114 divided by the numberof times any item contained in shared repository B 124 has beenidentified as a match and provided to a user of shared repository A 114.For example, where items in shared repository B 124 have been identifiedand provided to a user of shared repository A 114 50 times (D) and havebeen selected by a user 10 of those times (S), the share factor ofshared repository B 124 (S/D) is the value of 10 divided by 50, or 0.2,and the revised search score of FAQ B item is the search score (6)multiplied by the share factor (0.2), or 1.2.

Continuing the same example, where search engine A 112 identifies thequestion “How do I use the cloud-based data backup application?” and anassociated answer (FAQ A item) as a matching item in shared repository A114 and assigns FAQ A item a search score of 9, cross-search engine 132does not revise the search score of FAQ A item using a share factorbecause shared repository A 114 is the query repository, thus the searchscore of FAQ A item remains 9.

Cross-search engine 132 ranks and provides the search results (step220). In an embodiment, cross-search engine 132 ranks the itemsidentified from the search based on the search score of each item, whichmay or may not have been revised by cross-search engine 132 inaccordance with step 215. In an embodiment, the item with the highestsearch score is ranked first, and the item with the lowest search scoreis ranked last.

In an embodiment, cross-search engine 132 provides the identified itemsto a user through the same user interface through which cross-searchengine 132 received the search query (i.e., in the illustratedembodiment, user interface A 116 or, alternatively, user interface B126). In an embodiment, cross-search engine 132 provides the identifieditems in a ranked order. For example, cross-search engine 132 mayprovide the items in a list format where the highest-ranked item is thefirst item of the list and the lowest-ranked item is the last item ofthe list. In an embodiment, cross-search engine 132 may provide only aportion of the identified items. For example, cross-search engine 132may provide only the five highest-ranked items, or cross-search engine132 may provide only the highest twenty percent of the identified items.

In an embodiment, where cross-search engine 132 provides an item that isstored in a non-query shared repository, cross-search engine 132 mayadditionally provide an indication of the location in which the item isstored. For example, where a search query is received through userinterface B 126, and search engine A 112 identifies as a matching itemthe question “How do I use the cloud-based data backup application?” andan associated answer in shared repository A 114, and shared repository A114 is a collection of frequently asked questions and answers for MobileDevice Company A, cross-search engine 132 may, through user interface B126, provide the item (e.g., the question and answer) along with anindication that the item was located in a database of Mobile DeviceCompany A.

Cross-search engine 132 monitors user actions and updates share factors(step 225). In other words, cross-search engine 132 monitorsinteractions between a user and the identified items, and cross-searchengine 132 updates the share factor information in cross-searchrepository 134 accordingly. In an embodiment, interactions monitored bycross-search engine 132 include whether an identified item is providedto a user and whether a provided item is selected by a user.

In an embodiment, where an item is provided to a user and the userselects the item through the user interface, the values of D and S ofthe share factor (S/D) for the particular item (i.e., the number oftimes the item is provided to a user and the number of times the item isselected by a user, respectively) are each increased by 1. Where an itemis provided to a user and the user does not select the item, the valueof D is increased by 1 and the value of S is not adjusted. As anexample, where cross-search engine 132 determines that FAQ B item (froman example discussed in step 215) is provided to a user of sharedrepository A 126 and is selected by the user, and the share factor ofFAQ B item for shared repository A 126 is (5/20), or 0.25, cross-searchengine 132 updates the share factor information for FAQ B item byincreasing the values of both S and D by 1, which updates the sharefactor to (6/21), or 0.286.

In an embodiment, the share factor for a particular item areadditionally updated by accounting for the rank of the item relative tothe other items provided to the user. For example, where an item isprovided to a user and selected by the user, and the item is rankedtenth (e.g., the item is provided to the user lower than nine otheritems through the user interface), the share factor for the item isupdated to a greater value than if the item were ranked first and theuser selected the item.

In an embodiment, where the share factor for a particular is updated,cross-search engine 132 reduces the influence of older, less accuratedata on the share factor by applying a constant with a value less than 1to the share factor.

As an example, where an item is provided to a user and the user selectsthe item through the user interface, the value of D of the share factor(S/D) for the item may be updated according to the following algorithm:D′=[(D+1)*(1−ε)]+R, where “D′” is the updated value of D, “ε” is a smallconstant (e.g., 0.00001), and “R” is the rank of the item. The value ofS of the share factor (S/D) for the item may be updated according to thefollowing algorithm: S′=[(S+1)*(1−ε)]+(R*p), “S′” is the updated valueof S, “c” is a small constant (e.g., 0.00001), “R” is the rank of theitem, and “p” is a variable with a value of 1 where the item is selectedby the user (as in this example) or a value of 0 where the item isprovided to the user but is not selected.

In an alternative embodiment, the values of D and S of the share factor(S/D) for the particular shared repository containing the item (i.e.,the number of times any item of the shared repository is provided to auser and the number of times any item of the shared repository isselected by a user, respectively) are each similarly updated.

FIG. 3 depicts computing system 300, which illustrates components ofserver device A 110, server device B 120, and server device C 130, whichincludes cross-search engine 132. Computing system 300 includesprocessor(s) 301, cache 303, memory 302, persistent storage 305,communications unit 307, input/output (I/O) interface(s) 306, andcommunications fabric 304. Communications fabric 304 providescommunications between cache 303, memory 302, persistent storage 305,communications unit 307, and input/output (I/O) interface(s) 306.Communications fabric 304 can be implemented with any architecturedesigned for passing data and/or control information between processors(such as microprocessors, communications and network processors, etc.),system memory, peripheral devices, and any other hardware componentswithin a system. For example, communications fabric 304 may beimplemented with one or more buses or a crossbar switch.

Memory 302 and persistent storage 305 are computer readable storagemedia. In an embodiment, memory 302 includes random access memory (RAM)(not shown). In general, memory 302 may include any suitable volatile ornon-volatile computer readable storage media. Cache 303 is a fast memorythat enhances the performance of processors 301 by holding recentlyaccessed data, and data near recently accessed data, from memory 302.

Program instructions and data used to practice embodiments of thepresent invention may be stored in persistent storage 305 and in memory302 for execution by one or more of the respective processors 301 viacache 303. In an embodiment, persistent storage 305 includes a magnetichard disk drive. Alternatively, or in addition to a magnetic hard diskdrive, persistent storage 305 may include a solid state hard drive, asemiconductor storage device, read-only memory (ROM), erasableprogrammable read-only memory (EPROM), flash memory, or any othercomputer readable storage media that is capable of storing programinstructions or digital information.

The media used by persistent storage 305 may also be removable. Forexample, a removable hard drive may be used for persistent storage 305.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer readable storage medium that is also part of persistent storage305.

Communications unit 307, in these examples, provides for communicationswith other data processing systems or devices. In these examples,communications unit 307 includes one or more network interface cards.Communications unit 307 may provide communications through the use ofeither or both physical and wireless communications links. Programinstructions and data used to practice embodiments of the presentinvention may be downloaded to persistent storage 305 throughcommunications unit 307.

I/O interface(s) 306 allows for input and output of data with otherdevices that may be connected to each computer system. For example, I/Ointerface 306 may provide a connection to external devices 308 such as akeyboard, keypad, a touch screen, and/or some other suitable inputdevice. External devices 308 can also include portable computer readablestorage media such as, for example, thumb drives, portable optical ormagnetic disks, and memory cards. Software and data used to practiceembodiments of the present invention can be stored on such portablecomputer readable storage media and can be loaded onto persistentstorage 305 through I/O interface(s) 306. I/O interface(s) 306 alsoconnect to display 309.

Display 309 provides a mechanism to display data to a user and may be,for example, a computer monitor.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Modificationsand variations of the presented embodiments will be apparent to those ofordinary skill in the art without departing from the scope and spirit ofthe invention. The terminology used herein was chosen to best explainthe principles of the embodiment, to best explain the practicalapplication or technical improvement over technologies found in themarketplace, or to enable others of ordinary skill in the art tounderstand the embodiments disclosed herein.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general-purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The terminology used herein was chosen to best explain the principles ofthe embodiment, the practical application or technical improvement overtechnologies found in the marketplace, or to enable others of ordinaryskill in the art to understand the embodiments disclosed herein.

What is claimed is:
 1. A computer-implemented method performed at one ormore computer processors, comprising: receiving a plurality of searchresults, comprising: a first set of search results from a first searchengine searching a first shared repository; and a second set of searchresults from a second search engine searching a second sharedrepository; assigning a first search score to each search result of theplurality of search results based on a match between a search query andeach search result; determining a factor for each search result of thesecond set of search results; updating the factor for each search resultof the second set of search results by: determining whether each searchresult of the second set of search results is selected by the user;responsive to determining that a search result of the second set ofsearch results is selected by the user, increasing, by one or morecomputer processors, the factor proportionally to an order in which thesearch result is displayed; and responsive to determining that a searchresult from the second set of search results is not selected by theuser, decreasing, by one or more computer processors, the factorinversely proportionally to the order in which the search result isdisplayed; determining a second search score for each of the second setof search results, wherein: the second search score comprises the firstsearch score associated with each search result multiplied by the factorassociated with each search result; and returning the plurality ofsearch results through the cross-search engine according to a rank basedon the first search score and the second search score.
 2. The method ofclaim 1, wherein updating the factor for each search result of thesecond set of search results comprises: decreasing, by one or morecomputer processors, the factor by a value to reduce influence of pastdata on the factor, wherein the value is a same value for each factor ofeach search result of the second set of search results.
 3. The method ofclaim 1, wherein the first search engine and the second search enginecorrespond to an information source containing frequently askedquestions and answers.
 4. The method of claim 1, wherein: the factor isinversely proportional to a number of times each search result of thesecond set of search results from the second shared repository isdisplayed to the user in response to the search query, and the factor isproportional to a number of times each search result of the second setof search results from the second shared repository is selected by theuser.
 5. The method of claim 1, further comprising: directing the firstsearch engine to perform a first search of the search query in the firstshared repository; directing the second search engine to perform asecond search of the search query in the second shared repository.
 6. Acomputer program product comprising: one or more computer readablestorage media; and program instructions stored on the one or morecomputer readable storage media, the program instructions comprising:program instructions to receive a plurality of search results at across-search engine, comprising: a first set of search results from afirst search engine searching a first shared repository; and a secondset of search results from a second search engine searching a secondshared repository; program instructions to assign a first search scoreto each search result of the plurality of search results based on amatch between a search query submitted to the first search engine andeach search result; program instructions to determine a factor for eachsearch result of the second set of search results; program instructionsto update the factor for each search result of the second set of searchresults using: program instructions to determine whether each searchresult of the second set of search results is selected by the user;program instructions, responsive to determining that a search result ofthe second set of search results is selected by the user, to increasethe factor proportionally to an order in which the search result isdisplayed; and program instructions, responsive to determining that asearch result of second set of search results is not selected by theuser, to decrease the factor inversely proportionally to the order inwhich the search result is displayed; program instructions to determinea second search score for each of the second set of search results,wherein: the second search score comprises the first search scoreassociated with each search result multiplied by the factor associatedwith each search result; and program instructions to return theplurality of search results through the cross-search engine according toa rank based on the first search score and the second search score. 7.The computer program product of claim 6, wherein the programinstructions to update the factor for each search result of the secondset of search results comprise: program instructions to decrease thefactor by a value to reduce influence of past data on the factor,wherein the value is a same value for each factor of each search resultof the second set of search results.
 8. The computer program product ofclaim 6, wherein the first search engine and the second search enginecorrespond to an information source containing frequently askedquestions and answers.
 9. The computer program product of claim 6,wherein: the factor is inversely proportional to a number of times eachsearch result of the second set of search results from the second sharedrepository is displayed to the user in response to the search query, andthe factor is proportional to a number of times each search result ofthe second set of search results from the second shared repository isselected by the user.
 10. The computer program product of claim 6,further comprising program instructions, stored on the one or morecomputer readable storage media, to: direct the first search engine toperform a first search of the search query in the first sharedrepository; direct the second search engine to perform a second searchof the search query in a second shared repository.
 11. A computer systemcomprising: one or more computer processors; one or more computerreadable storage media; and program instructions, stored on the one ormore computer readable storage media, for execution by at least one ofthe one or more computer processors, the program instructionscomprising: program instructions to receive a plurality of searchresults at a cross-search engine, comprising a first set of searchresults from a first search engine searching a first shared repository;and a second set of search results from a second search engine searchinga second shared repository; program instructions to assign a firstsearch score to each search result of the plurality of search resultsbased on a match between a search query submitted to the first searchengine and each search result; program instructions to determine afactor for each search result of the second set of search results;program instructions to update the factor for each search result of thesecond set of search results using: program instructions to determinewhether each search result of the second set of search results isselected by the user; program instructions, responsive to determiningthat a search result of the second set of search results is selected bythe user, to increase the factor proportionally to an order in which thesearch result is displayed; and program instructions, responsive todetermining that a search result of second set of search results is notselected by the user, to decrease the factor inversely proportionally tothe order in which the search result is displayed; program instructionsto determine a second search score for each of the second set of searchresults, wherein: the second search score comprises the first searchscore associated with each search result multiplied by the factorassociated with each search result; and program instructions to returnthe plurality of search results through the cross-search engineaccording to a rank based on the first search score and the secondsearch score.
 12. The computer system of claim 11, wherein the programinstructions to update the factor for each search result of the secondset of search results comprise: program instructions to decrease thefactor by a value to reduce influence of past data on the factor,wherein the value is a same value for each factor of each search resultof the second set of search results.
 13. The computer system of claim11, wherein the first search engine and the second search enginecorrespond to an information source containing frequently askedquestions and answers.
 14. The computer system of claim 11, wherein: thefactor is inversely proportional to a number of times each search resultof the second set of search results from the second shared repository isdisplayed to the user in response to the search query, and the factor isproportional to a number of times each search result of the second setof search results from the second shared repository is selected by theuser.